﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LRSystem
{
    public abstract class baseReceivedPacket
    {
        public abstract ushort pktype { get; }                      // 报文类型
        public abstract DateTime rxtime { get; set; }               // 报文接收到的时间
        public abstract Object sender { set; get; }                 // 报文的发送源(该资源有可能是TcpClient，或者是SerialPort),注意有可能被释放
        public abstract string sourcename { set; get; }             // 由于sender为TcpClient时，sender中途可能被释放掉，因此保留一个源的字符串信息
        public virtual baseReceivedPacket CreateInstance(byte pt)   // 根据pktype类型创建实例
        {
            if (pt == pktype)
                return (baseReceivedPacket)Activator.CreateInstance(this.GetType());
            else
                return null;
        }
        public abstract bool Parse(List<byte> rxPacket, int index);  // 根据收到的数据解析并赋值当前报文各字段
    }
}
